
import dictionary from './dictionary.json'

/**
 * 根据字典类型和代码获取对应的文本描述
 * @param {string} dictType - 字典类型，如 'userType', 'zzmm'
 * @param {string|number} code - 代码值
 * @param {string} defaultText - 当未找到匹配项时返回的默认值
 * @returns {string} - 对应的文本描述
 */
export function getTextByCode(dictType, code, defaultText = '') {
  if (!dictionary[dictType] || !dictionary[dictType][code]) {
    return defaultText;
  }
  return dictionary[dictType][code];
}

/**
 * 根据字典类型和文本描述获取对应的代码
 * @param {string} dictType - 字典类型，如 'userType', 'zzmm'
 * @param {string} text - 文本描述
 * @param {string|number} defaultCode - 当未找到匹配项时返回的默认值
 * @returns {string|number} - 对应的代码
 */
export function getCodeByText(dictType, text, defaultCode = '') {
  if (!dictionary[dictType]) return defaultCode;

  const entries = Object.entries(dictionary[dictType]);
  const found = entries.find(([_, value]) => value === text);

  return found ? found[0] : defaultCode;
}

/**
 * 获取指定字典类型的所有选项（用于下拉框等）
 * @param {string} dictType - 字典类型，如 'userType', 'zzmm'
 * @returns {Array} - 包含 label 和 value 的选项数组
 */
export function getDictOptions(dictType) {
  if (!dictionary[dictType]) return [];

  return Object.entries(dictionary[dictType]).map(([code, text]) => ({
    value: code,
    label: text
  }));
}

export function getDictOptionsNumber(dictType) {
  if (!dictionary[dictType]) return [];

  return Object.entries(dictionary[dictType]).map(([code, text]) => ({
    value: Number(code),
    label: text
  }));
}

/**
 * 获取完整的字典
 * @returns {Object} - 完整的字典对象
 */
export function getDictionary() {
  return dictionary;
}

// // 示例组件
// <template>
//   <div>
//     <div>用户类型: {{ userTypeText }}</div>
//     <div>政治面貌: {{ zzmmText }}</div>
//
//     <select v-model="selectedUserType">
//       <option v-for="option in userTypeOptions" :key="option.value" :value="option.value">
//         {{ option.label }}
//       </option>
//     </select>
//   </div>
// </template>
//
// <script>
// import { getTextByCode, getCodeByText, getDictOptions } from '@/utils/dictionaryUtil';
//
// export default {
//   data() {
//     return {
//       userCode: '2',
//       zzmmCode: '03',
//       selectedUserType: '1',
//       userTypeOptions: []
//     }
//   },
//   computed: {
//     userTypeText() {
//       return getTextByCode('userType', this.userCode, '未知用户类型');
//     },
//     zzmmText() {
//       return getTextByCode('zzmm', this.zzmmCode, '未知政治面貌');
//     }
//   },
//   created() {
//     // 获取所有用户类型选项
//     this.userTypeOptions = getDictOptions('userType');
//
//     // 根据文本获取代码
//     const code = getCodeByText('zzmm', '共青团员');
//     console.log('共青团员的代码是:', code); // 输出: 03
//   }
// }
// </script>


// // 在API请求或数据处理中使用
// import {getTextByCode} from '@/utils/dictionaryUtil';
//
// // 假设从API获取的用户数据
// const userData = {
//   name: '张三',
//   userType: '2',
//   zzmm: '01'
// };
//
// // 转换为带有文本描述的数据
// const formattedUserData = {
//   ...userData,
//   userTypeText: getTextByCode('userType', userData.userType),
//   zzmmText: getTextByCode('zzmm', userData.zzmm)
// };
//
// console.log(formattedUserData);
// // 输出: { name: '张三', userType: '2', zzmm: '01', userTypeText: '教师', zzmmText: '中共党员' }
